Next: Byte-Code Objects, Previous: Eval During Compile, Up: Byte Compilation [Contents][Index]
Error and warning messages from byte compilation are printed in a buffer named *Compile-Log*. These messages include file names and line numbers identifying the location of the problem. The usual Emacs commands for operating on compiler output can be used on these messages.
When an error is due to invalid syntax in the program, the byte compiler might get confused about the error’s exact location. One way to investigate is to switch to the buffer *Compiler Input*. (This buffer name starts with a space, so it does not show up in the Buffer Menu.) This buffer contains the program being compiled, and point shows how far the byte compiler was able to read; the cause of the error might be nearby. See Syntax Errors, for some tips for locating syntax errors.
A common type of warning issued by the byte compiler is for functions and variables that were used but not defined. Such warnings report the line number for the end of the file, not the locations where the missing functions or variables were used; to find these, you must search the file manually.
If you are sure that a warning message about a missing function or variable is unjustified, there are several ways to suppress it:
fboundp test, like this:
(if (fboundp 'func) ...(func ...)...)
The call to func must be in the
then-form of the if, and
func must appear quoted in the call to
fboundp. (This feature operates for
cond as well.)
boundp test:
(if (boundp 'variable) ...variable...)
The reference to variable must be in the
then-form of the if, and
variable must appear quoted in the call to
boundp.
declare-function. See Declaring
Functions.defvar with no initial value. (Note
that this marks the variable as special.) See Defining
Variables.You can also suppress any and all compiler warnings within a
certain expression using the construct
with-no-warnings:
In execution, this is equivalent to (progn
body...), but the compiler does not issue
warnings for anything that occurs inside body.
We recommend that you use this construct around the smallest possible piece of code, to avoid missing possible warnings other than one you intend to suppress.
Byte compiler warnings can be controlled more precisely by
setting the variable byte-compile-warnings. See its
documentation string for details.
Next: Byte-Code Objects, Previous: Eval During Compile, Up: Byte Compilation [Contents][Index]